using System.ComponentModel;

namespace JGSY.CMS.LowCode.Platform.Domain.Enums
{
    /// <summary>
    /// 工作流实例状态枚举
    /// 定义工作流实例在执行过程中的各种状态
    /// </summary>
    public enum WorkflowInstanceStatus
    {
        /// <summary>
        /// 待启动 - 工作流实例已创建但尚未开始执行
        /// </summary>
        [Description("待启动")]
        Pending = 0,
        
        /// <summary>
        /// 运行中 - 工作流实例正在执行中
        /// </summary>
        [Description("运行中")]
        Running = 1,
        
        /// <summary>
        /// 暂停 - 工作流实例执行已暂停
        /// </summary>
        [Description("暂停")]
        Paused = 2,
        
        /// <summary>
        /// 已完成 - 工作流实例成功完成所有步骤
        /// </summary>
        [Description("已完成")]
        Completed = 3,
        
        /// <summary>
        /// 已失败 - 工作流实例执行过程中出现错误
        /// </summary>
        [Description("已失败")]
        Failed = 4,
        
        /// <summary>
        /// 已取消 - 工作流实例被用户主动取消
        /// </summary>
        [Description("已取消")]
        Cancelled = 5,
        
        /// <summary>
        /// 已终止 - 工作流实例被系统强制终止
        /// </summary>
        [Description("已终止")]
        Terminated = 6
    }

    /// <summary>
    /// 工作流任务状态枚举
    /// 定义工作流中单个任务的执行状态
    /// </summary>
    public enum WorkflowTaskStatus
    {
        /// <summary>
        /// 待处理 - 任务已创建但尚未开始处理
        /// </summary>
        [Description("待处理")]
        Pending = 0,
        
        /// <summary>
        /// 处理中 - 任务正在执行中
        /// </summary>
        [Description("处理中")]
        InProgress = 1,
        
        /// <summary>
        /// 已完成 - 任务成功完成
        /// </summary>
        [Description("已完成")]
        Completed = 2,
        
        /// <summary>
        /// 已拒绝 - 任务被审核拒绝
        /// </summary>
        [Description("已拒绝")]
        Rejected = 3,
        
        /// <summary>
        /// 已跳过 - 任务根据条件被跳过执行
        /// </summary>
        [Description("已跳过")]
        Skipped = 4,
        
        /// <summary>
        /// 已取消 - 任务被用户主动取消
        /// </summary>
        [Description("已取消")]
        Cancelled = 5,
        
        /// <summary>
        /// 已超时 - 任务执行超过预设时间限制
        /// </summary>
        [Description("已超时")]
        Timeout = 6
    }
}
